#include <iostream>
//项目名-右键属性-配置属性-C/C++/语言/C++语言标准设置/ISO C++20 Standard
//C++20需启用
//consteval关键字定义C++20即时函数
//C++20引入编译器必须执行的即时函数
//即时函数调用传递的参数必须是常量/不然无法通过编译
consteval double GetPi() { 
	return 22.0 / 7;
}
//constexpr表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。
constexpr double XPi(int x) { 
	return x * GetPi(); 
}

int main()
{
	using namespace std;
	constexpr double pi = GetPi(); // 由编译器评估

	cout << "用编译器计算constexpr pi" << pi << endl;
	cout << "constexpr XPi(2) 由编译器评估 " << XPi(2) << endl;

	int multiple = 5;
	cout << "(非常量) integer multiple = " << multiple << endl;
	cout << "当XPi(multiple) 被调用时constexpr被忽略" << XPi(multiple) << endl;
	return 0;
}